package com.wicket.okrapp.integration.dto;

import com.wicket.okrapp.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc UpdateDifferentWorkTasksComReqDto
 * @使用场景
 */
@Data
public class UpdateDifferentWorkTasksComReqDto
  extends BaseDto
  implements Serializable {

  /**
   * 工作任务对象类型 PROJECT:项目 TASK:任务 PROBLEM:问题
   */
  @NotNull(message = "工作任务对象类型不能为空")
  @ApiModelProperty("工作任务对象类型")
  private String workTaskObjectType;

  /**
   * 工作任务对象ID
   */
  @NotNull(message = "工作任务对象ID不能为空")
  @ApiModelProperty("工作任务对象ID")
  private String workTaskObjectId;

  /**
   * 接收部门ID
   */
  @ApiModelProperty("接收部门ID")
  private String receiveSubjectId;

  /**
   * 任务进展状态 NOT_AT_THE:未开始 ONGOING:进行中 HAS_ENDED:已结束
   */
  @ApiModelProperty("任务进展状态")
  private String taskStatus;

  /**
   * 内容冗余状态 EDITING:草稿 TOBESIGN:待签收 ONGOING:进行中 FAILED:已失败 OVERDUE:逾期任务 NOT_AT_THE:未开始 UNCOMPLETED:未完成 COMPLETED:已完成 UNREPORTED:待汇报 EVA:评价中 AUDIT:审核中 EXPIRED:已逾期 SUCCESS:已成功 ENDED:已结束 UNLIMITED:不限
   */
  @ApiModelProperty("内容冗余状态")
  private String stateCode;

  /**
   * 是否完成 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否完成")
  private String isComplete;

  /**
   * 是否逾期 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否逾期")
  private String isOverdue;

  /**
   * 实际开始时间
   */
  @ApiModelProperty("实际开始时间")
  private Date actualStartTime;

  /**
   * 实际结束时间
   */
  @ApiModelProperty("实际结束时间")
  private Date actualEndTime;

  /**
   * 总时长
   */
  @ApiModelProperty("总时长")
  private Long totalLength;

  /**
   * 完成情况 AHEAD_SCHEDULE:提前完成（提前24h） NORMAL_COMPLETE:正常完成 OVERDUE_COMPLETE:逾期完成
   */
  @ApiModelProperty("完成情况")
  private String completeStatus;

  /**
   * 开始时间偏差天数
   */
  @ApiModelProperty("开始时间偏差天数")
  private Long deflectionStartDays;

  /**
   * 结束时间偏差天数
   */
  @ApiModelProperty("结束时间偏差天数")
  private Long deflectionEndDays;

  /**
   * 前端状态时间
   */
  @ApiModelProperty("前端状态时间")
  private Long deflectionTime;

  /**
   * 前端状态时间语义提示
   */
  @ApiModelProperty("前端状态时间语义提示")
  private String deflectionInfo;

  /**
   * 进度值（数值）
   */
  @ApiModelProperty("进度值（数值）")
  private Double progressValue;

}
